AWSの負荷テストについて
はじめに
AWSでは負荷テストを実施する際に事前申請は不要でしたが、 意図した負荷であってもトラフィック量によってはDoS/DDosとして検知されネットワークが遮断されることがありました。 そこでネットワーク遮断の回避の方法や負荷テストの可否について、 AWSへ確認しましたところ現在は負荷テストを行う際は実施前に承認を受ける必要があることがわかりました。
英文 (AWSより)
All AWS users are required to receive approval before any load testing. Please send detailed plans of the testing including expected peak bandwidth to the simulated events email address listed on the AWS Penetration Testing page.
申請は侵入テストのページにあります 「他のシミュレートされたイベントの承認をリクエストする」のメールアドレスに 予測されるピーク帯域を含むテスト計画の詳細を連絡します。
本ブログでは負荷テストの申請条件や申請方法についてご紹介させていただきます。
このプロセスや申請方法はあくまで現在のもので変更される可能性があります。
申請条件や注意事項
- EC2(ELB経由でも可)、RDSインスタンスに負荷テストを行う場合
- m1.small,t1.micro,nanoサイズのEC2インスタンスは申請不可
- smallサイスのRDSインスタンスは申請不可
- テスト対象はAWSアカウント所有のリソース限定
- Dos/DDosシミュレータの利用は禁止
- 申請者の送信元アドレスドメインがターゲットAWSアカウントの登録ドメイン/サブドメインと異なる場合は承認されない
- インスタンスは終了(Terminated)していないこと
- 5~7営業日で承認される
申請方法
- 現時点ではWebフォームはないのでメールでの申請
- 申請は英語で行う
申請内容
| 項目 | 内容 |例| |:-----------|:------------|:------------| |Account Name: |AWSアカウント名|-| |Account number(s)|AWSアカウントID|-| |Primary Email Addresses:|AWSアカウントのメールアドレス|-| |Additional Email Addresses to cc: |CC:メールアドレス|-| |What type of testing will you be performing?|テストの内容について|HTTP Load testing for Web applications running on EC2 instances| |What tools will be utilized for testing?|テストで使用する具体的なツールの名称を記載。 独自のツールやスクリプトをご利用の場合はその旨を記載|JMeter| |Source IP(s):|ソースIPアドレス ソースIPアドレスがAWS上にある場合は、AWSアカウントIDを併記する|IP address IP address owned by AWSアカウントID| |Target IP(s):|ターゲットインスタンスのIPアドレスおよびAWSアカウントIDを記載|IPアドレス owned by AWSアカウントID| |Start & End dates:|負荷テストの実施期間(承認まで5~7営業日ほどかかるので余裕をもって申請すること)|開始日時 Start Date / Time:(YYYY-MM-DD HH:MM) 終了日時 End Date / Time:(YYYY-MM-DD HH:MM)| |How much traffic do you plan to generate during testing?|Webサイトの試験の場合は、サイトへのアクセス数の見積もりを記載 HTTPによる負荷テストでない場合はリクエスト数等に類する値を記載|1,000,000 hits during testing period.| |What is your expected peak load? (i.e. xx Gbps)|ピーク時の帯域を記載|2Gbps| |How much total expected bandwidth do you plan on generating during the entire course of our test? (i.e. xx GBytes)|テストで使用する総トラフィック量(インスタンスあたりのトラフィック×インスタンス数の値を記入)を記載 複数インスタンスを使用する場合、テストで使用する1インスタンス単位のトラフィック量を記載|40GBytes| |Instance IDs involved:|テストプログラムが実行されるインスタンスがAWS上にある場合はインスタンスID、AWSアカウントIDを併記 ターゲットインスタンスのインスタンスIDとAWSアカウントIDを記載、インスタンスがELB配下にある場合はELB名を記載|(Source) i-0123456789abcdef0, i-0123456780abcdef1 owned by AWSアカウントID (Target) i-0123456789abcdef2, i-0123456780abcdef3 behind of ELB: elb-name owned by AWSアカウントID| |If you are testing more than one region, please list expected bandwidth per region:|負荷テストで2リージョン以上利用する場合はリージョンごとのトラフィック量を記載|Only in ap-northeaset-1|
メールでAWSへ連絡する(参考)
件名:(例)Load test request on AWS
本文:
Hello,
We will request application Load testing. The application contents are as follows;
Account Name: ***
Account number(s): ***
Additional Email Addresses to cc: ***
What type of testing will you be performing?: HTTP Load testing for Web applications running on EC2 instances via ELB.
What tools will be utilized for testing?: JMeter
Source IP(s): .../32 .../32
Target IP(s): There isn't have fixed IP address, because test target is ELB. DNS Record Name of ELB: ***
Start & End dates: 2017/03/01 〜 2017/03/07
How much traffic do you plan to generate during testing?: Total *** hits during testing period.
What is your expected peak load? (i.e. xx Gbps): *** Mbps
How much total expected bandwidth do you plan on generating during the entire course of your test? (i.e. xx Gbps): *** GBytes
Instance IDs involved: (Source) i-***, i-*** owned by 0123456789ab (Target) i-***, i-***, i-*** behind of ELB: alb owned by 0123456789cd
If you are testing more than one region, please list expected bandwidth per region: Only in ap-northeast-1
Sincerely,
まとめ
今回は負荷テストの申請方法についてご紹介しました。 ELB経由で負荷テストを実施する場合はELBの暖機申請も行うようにしてください。